资源
-
PaperWithCode:Real-time Scene Text Detection with Differentiable Binarization | Papers With Code
-
Arxiv:[1911.08947] Real-time Scene Text Detection with Differentiable Binarization (arxiv.org)
-
Gitee:configs/det/dbnet/README_CN.md · MindSpore Lab/mindocr - Gitee.com
-
OCR-(DB+CRNN)-代码分析-实践环境配置及运行 - Lwd_curent (lwd3-byt.github.io)
正文
Abstract
- 基于分割的场景文本检测(可以获得像素级别的预测)可以更精确地描述曲线文本等各种形状的场景文本
- 二值化的后处理对于基于分割的检测至关重要,该检测将分割方法产生的概率图转换为文本的边界框/区域
- 提出了一个名为可微分二值化(DB)的模块,它可以在分割网络中执行二值化过程
- 好使。
Introduction
本文的主要贡献是提出了可微的 DB 模块,它使二值化过程在 CNN 中可以端到端训练。
- 大多数现有的检测方法使用类似的后处理流水线,如图所示(蓝色箭头后面):
- 首先,它们设置了一个固定的阈值,用于将分割网络生成的概率图转换为二值图像;
- 然后,使用像素聚类等启发式技术将像素分组到文本实例中。
- 或者,我们的流水线(如图中的红色箭头所示)旨在将二值化操作插入到分割网络中进行联合优化。通过这种方式,可以自适应地预测图像每个位置的阈值,这可以完全区分像素与前景和背景。然而,标准的二值化函数是不可微的,我们提出了一种称为可微分二值化(DB)的近似函数,当与分割网络一起训练时,它是完全可微的。
本文的主要贡献是提出了可微分的 DB 模块,这使得二值化过程在 CNN 中端到端可训练。
Related Work
最近的场景文本检测方法大致可以分为两类:基于回归(Regression-based)的方法和基于分割(Segmentation-based)的方法。
-
基于回归 Regression 的方法是一系列直接回归文本实例的边界框的模型。
-
基于分割 Segmentation 的方法通常结合像素级预测和后处理算法来获得边界框
-
快速的场景文本检测方法注重准确性和推理速度。
Methodology
1 |
|
- resnet
- MobilenetV3
- shfflenetv2
-
FPN
-
该代码实现了一个特征金字塔网络(FPN)的模块,主要用于融合来自不同尺度的特征图。它包括:
-
特征图减少层:将每个特征图的通道数减少到较小的值。
-
平滑层:对每一层的特征图进行平滑处理。
-
融合和上采样:通过上采样和拼接不同层的特征图来增强特征表示。
-
最终卷积:对融合后的特征图进行进一步处理,以生成最终的输出。
-
-
1 |
|
- ConvHead
ConvHead
是一个非常基础且常见的模块,通过一个 1x1 卷积层和 Sigmoid 激活函数对输入特征图进行变换。它主要用于生成最终的输出特征图,特别是在需要将特征图转换为概率图的任务中。
1 |
|
- DBHead
1 |
|
-
将输入图像输入到 feature-pyramid back-bone 中
-
金字塔特征被上采样到相同的尺度并级联以产生特征
-
特征 被用于预测概率图 probability map 和阈值图 threshold map
-
DB 通过 和 计算近似二值映射,得到近似二值图 approximate binary map
-
在 train 期间,监督应用于 、 和 ,其中 和 共享相同的监督
-
在 inference 期间,通过框公式化模块可以容易地从 或 中获得边界框
Binarization
Standard binarization
就是一刀切。
给定由分割网络产生的概率图 ,其中 和 表示图的高度和宽度,必须将其转换为二值图 ,其中值为 被认为是有效的文本区域。其中 是预定义的阈值, 表示 map 中的坐标点。
Differentiable binarization
上式不可微分,在 train 过程中就不可以与分割网络一起进行优化,因此,我们建议使用阶跃函数进行二值化:
其中 是近似二进制映射; 是从网络学习的自适应阈值映射; 表示放大因子。 根据经验设置为 50。
1 |
|
DB 提高性能的原因可以通过梯度的反向传播来解释。以二元交叉熵损失为例。定义 作为我们的 DB 函数,其中 。那么正标签的损失 和负标签的损失 l_{−} 分别为:
我们可以很容易地用链式法则计算损失的微分:
和 l_{−} 的微分中我们可以看出:
- 梯度被放大因子 放大;
- 梯度的放大对于大多数错误预测的区域都是显著的(对于 ,;对于 ,),从而有利于优化,并有助于产生更独特的预测。此外,当 x = P_{i,j} − T_{i,j} 时, 的梯度在前景和背景之间受到 的影响和重新缩放。
Adaptive threshold
自适应阈值。
Deformable convolution
可变形卷积可以为模型提供灵活的感受野,这对极端长宽比的文本实例尤其有益。接下来,在 ResNet-18 或 ResNet-50 主干中的 conv3、conv4 和 conv5 阶段,在所有 3×3 卷积层中应用调制可变形卷积。
Label generation
概率图的标签生成受到 PSENet 的启发。给定一个文本图像,其文本区域的每个多边形由一组线段描述:
是顶点的数量,在不同的数据集中可能不同,例如,ICDAR 2015 数据集为 4(Karatzas 等人),CTW1500 数据集为 16。
通过使用 Vatti 剪裁算法将多边形 缩小为 来生成正区域。收缩的偏移量 是根据原始多边形的周长 和面积 计算得出的:
其中 是收缩率,根据经验设置为 0.4。
通过类似的过程,我们可以为阈值映射生成标签。首先,将文本多边形 以与 相同的偏移量 展开。我们将 和 之间的间隙视为文本区域的边界,其中可以通过计算到 中最近线段的距离来生成阈值图的标签。
在 data_loader
中实现。
- 根据人工标记的 gt 框(一系列坐标点),进行一些膨胀(dilate)和缩小(shrink)的操作
- 做一些 gt 框内的计算来得到
probability_map
和threshold_map
Optimization
损失函数 可以表示为概率映射 的损失、二进制映射 的损失和阈值映射 的损失的加权和
和 分别取 1.0 和 10。
对 和 都应用了二进制交叉熵(BCE)损失:
1 |
|
被计算为扩展文本多边形 内的预测和标签之间的 距离之和:
1 |
|
在推理阶段,我们可以使用概率图或近似二进制图来生成文本边界框,这会产生几乎相同的结果。
其中 A’ 是收缩多边形的面积; 是收缩多边形的周长; 根据经验设定为 1.5。
DB_loss.py
:
1 |
|
Experiments
1 |
|
1 |
|
SynthText 是一个由 800k 张图像组成的合成数据集。这些图像是从 8k 个背景图像合成的。此数据集仅用于预训练我们的模型。
训练数据的数据扩充包括:
- 角度范围为 的随机旋转
- 随机裁剪
- 随机翻转
- 为了提高训练效率,所有处理后的图像都被重新调整为
- 使用 SynthText 数据集对它们进行 100k 次迭代的预训练。
- 在 1200 个 epoch 的相应真实世界数据集上微调模型。
- 训练批次大小设置为 16。我们遵循多学习率策略,当前迭代的学习率等于初始学习率乘以
- 初始学习率设置为 0.007, 为 0.9
- 使用 0.0001 的权重衰减和 0.9 的动量。
- 训练批次大小设置为 16。我们遵循多学习率策略,当前迭代的学习率等于初始学习率乘以
Ablation study
证明各个模块都能提高性能。
Comparisons with previous methods
P、R、F 三个指标都最佳。
- TP: true positive。实际为正,预测为正。
- FP: false positive。实际为负,预测为正。
- TN: true negative。实际为负,预测为负。
- FN: false negative。实际为正,预测为负。
在 TotalText 下的训练结果:
Method | P | R | F |
---|---|---|---|
DB-ResNet-18 (800) | 88.3 | 77.9 | 82.8 |
DB-ResNet-50 (800) | 87.1 | 82.5 | 84.7 |
在 CTW1500 下的训练结果:
Method | P | R | F |
---|---|---|---|
Ours-ResNet18 (1024) | 84.8 | 77.5 | 81.0 |
Ours-ResNet50 (1024) | 86.9 | 80.2 | 83.4 |
Limitation
我们的方法的一个局限性是它不能处理 “文本中的文本” 的情况,这意味着一个文本实例在另一个文本例子中。尽管收缩的文本区域在文本实例不在另一个文本实例的中心区域的情况下很有帮助,但当文本实例正好位于另一个文字实例的中心区时,它会失败。这是基于分割的场景文本检测器的常见限制。
Conclusion
好使。